package leetcode.tanxin;

import java.util.ArrayList;

/**
 给你一个长度为n的整数数组，请你判断在 最多 改变1个元素的情况下，该数组能否变成一个非递减数列。

 我们是这样定义一个非递减数列的：对于数组中任意的i (0 <= i <= n-2)，总满足 nums[i] <= nums[i + 1]。

 输入: nums = [4,2,3]
 输出: true
 解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。

 */
public class CheckPossibility {
    public static void main(String[] args) {
        CheckPossibility cp = new CheckPossibility();
        int [] num = new int[]{4,2,1};
        boolean res = cp.checkPossibility(num);
        System.out.println(res);
    }
    public boolean checkPossibility(int[] nums) {
        int count = 0;
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 1; i < nums.length; i++) {
            int diff = nums[i] - nums[i - 1];
            list.add(diff);
            count += diff<0?1:0;
        }
        if (count>=2)
            return false;

        if(count==0)
            return true;

        for (int i = 0; i < list.size(); i++) {
            Integer diff = list.get(i);
            if(diff<0){
                if(i==list.size()-1 || i==0)
                    return true;
                else {
                    return diff+list.get(i-1)>=0 ||  diff+list.get(i+1)>=0;
                }
            }
        }
        return  false;
    }
}